package com.yanqu.road.entity.kowloon;

import com.yanqu.road.entity.kowloon.common.KowloonBuffParam;
import com.yanqu.road.entity.kowloon.common.KowloonRange;

import java.util.List;

/**
 * 九龙城寨属性数据
 * 具体属性，需要从配置那边转化一份过来
 */
public class KowloonNpcAttributeData {

    /**
     * 血量
     */
    private long hp;

    private long attack;

    private int atkSpeed;

    private KowloonRange attackRange = new KowloonRange();

    private KowloonRange hitRange = new KowloonRange();

    private int moveSpeed;

    private int bullet;

    private int attackNum;

    private KowloonBuffParam slowBuff = new KowloonBuffParam();

    private KowloonBuffParam freezeBuff = new KowloonBuffParam();

    private KowloonBuffParam bleedingBuff = new KowloonBuffParam();

    private KowloonBuffParam vertigoBuff = new KowloonBuffParam();


    private int ejectionRange;

    private int weaponRadius;

    /**
     * 伤害效果 落雷buff
     */
    private KowloonBuffParam thunderBuff = new KowloonBuffParam();


    /**
     * 击退buff
     */
    private KowloonBuffParam beatBackBuff = new KowloonBuffParam();

    /**
     * 攻击力加成buff
     */
    private KowloonBuffParam atkBuff = new KowloonBuffParam();

    public KowloonNpcAttributeData clone() {
        KowloonNpcAttributeData attributeData = new KowloonNpcAttributeData();
        attributeData.setHp(this.hp);
        attributeData.setAttack(this.attack);
        attributeData.setAtkSpeed(this.atkSpeed);
        attributeData.setAttackRange(this.attackRange.clone());
        attributeData.setHitRange(this.hitRange.clone());
        attributeData.setMoveSpeed(this.moveSpeed);
        attributeData.setBullet(this.bullet);
        attributeData.setAttackNum(this.attackNum);
        attributeData.setSlowBuff(this.slowBuff.clone());
        attributeData.setFreezeBuff(this.freezeBuff.clone());
        attributeData.setBleedingBuff(this.bleedingBuff.clone());
        attributeData.setVertigoBuff(this.vertigoBuff.clone());
        attributeData.setEjectionRange(this.ejectionRange);
        attributeData.setWeaponRadius(this.weaponRadius);
        attributeData.setBeatBackBuff(this.beatBackBuff.clone());
        attributeData.setAtkBuff(this.atkBuff.clone());
        attributeData.setThunderBuff(this.thunderBuff.clone());
        return attributeData;
    }

    public long getHp() {
        return hp;
    }

    public void setHp(long hp) {
        this.hp = hp;
    }

    public long getAttack() {
        return attack;
    }

    public void setAttack(long attack) {
        this.attack = attack;
    }

    public int getAtkSpeed() {
        return atkSpeed;
    }

    public void setAtkSpeed(int atkSpeed) {
        this.atkSpeed = atkSpeed;
    }

    public KowloonRange getAttackRange() {
        return attackRange;
    }

    public void setAttackRange(KowloonRange attackRange) {
        this.attackRange = attackRange;
    }

    public KowloonRange getHitRange() {
        return hitRange;
    }

    public void setHitRange(KowloonRange hitRange) {
        this.hitRange = hitRange;
    }

    public int getMoveSpeed() {
        return moveSpeed;
    }

    public void setMoveSpeed(int moveSpeed) {
        this.moveSpeed = moveSpeed;
    }

    public int getBullet() {
        return bullet;
    }

    public void setBullet(int bullet) {
        this.bullet = bullet;
    }

    public int getAttackNum() {
        return attackNum;
    }

    public void setAttackNum(int attackNum) {
        this.attackNum = attackNum;
    }

    public KowloonBuffParam getSlowBuff() {
        return slowBuff;
    }

    public void setSlowBuff(KowloonBuffParam slowBuff) {
        this.slowBuff = slowBuff;
    }

    public KowloonBuffParam getFreezeBuff() {
        return freezeBuff;
    }

    public void setFreezeBuff(KowloonBuffParam freezeBuff) {
        this.freezeBuff = freezeBuff;
    }

    public KowloonBuffParam getBleedingBuff() {
        return bleedingBuff;
    }

    public void setBleedingBuff(KowloonBuffParam bleedingBuff) {
        this.bleedingBuff = bleedingBuff;
    }

    public KowloonBuffParam getVertigoBuff() {
        return vertigoBuff;
    }

    public void setVertigoBuff(KowloonBuffParam vertigoBuff) {
        this.vertigoBuff = vertigoBuff;
    }

    public int getEjectionRange() {
        return ejectionRange;
    }

    public void setEjectionRange(int ejectionRange) {
        this.ejectionRange = ejectionRange;
    }

    public int getWeaponRadius() {
        return weaponRadius;
    }

    public void setWeaponRadius(int weaponRadius) {
        this.weaponRadius = weaponRadius;
    }

    public KowloonBuffParam getBeatBackBuff() {
        return beatBackBuff;
    }

    public void setBeatBackBuff(KowloonBuffParam beatBackBuff) {
        this.beatBackBuff = beatBackBuff;
    }

    public KowloonBuffParam getAtkBuff() {
        return atkBuff;
    }

    public void setAtkBuff(KowloonBuffParam atkBuff) {
        this.atkBuff = atkBuff;
    }

    public KowloonBuffParam getThunderBuff() {
        return thunderBuff;
    }

    public void setThunderBuff(KowloonBuffParam thunderBuff) {
        this.thunderBuff = thunderBuff;
    }
}
